package com.atguigu.ssyx.product.controller;

import com.atguigu.ssyx.common.result.Result;
import com.atguigu.ssyx.product.service.FileUploadService;
import io.minio.errors.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author 杨林
 * @create 2023-07-24 14:37 星期一
 * description:
 */

/**
 * 文件上传前端总控制器
 */
@RestController
@RequestMapping("/admin/product")
@CrossOrigin  //跨域
@Api(tags = "文件上传管理")
@Slf4j
public class FileUploadController {

    @Autowired
    private FileUploadService fileUploadService;
    
    /**
     * 文件上传
     *      多部件上传
     *      web开发
     *          请求：
     *              请求首行（请求方式  请求协议  请求地址）
     *                  @PathVarable:工作在请求首行，获取路径位置参数
     *                  @RequestParam：查询字符串或请求体
     *              请求头
     *                  @ReqhestHeader：获取请求头  （也可以用于获取整个Cookie）
     *                  @CookieValue：获取Cookie的值
     *              请求体
     *                  @RequestBody：获取请求体的所有参数
     *                  @RequestPart：获取请求体的文件项
     *          响应：
     *              响应首行（响应状态码）
     *              响应头
     *              响应体
     * 完整的请求地址：
     *      http://192.168.10.128/admin/product/xxx?key=value
     *      协议://主机:端口/路径?查询字符串
     * 
     * @param file
     * @return
     */
    @PostMapping("/fileUpload")
    @ApiOperation(value = "文件是上传")
    public Result fileUpload(@RequestPart("file") MultipartFile file){

        //String name = file.getName();  //name指文件上传框的名字，并非文件的名字
        //String originalFilename = file.getOriginalFilename();   //指文件名
        log.info("文件上传开始，文件大小为：{}",file.getSize());
        String url = null;

        try {
            url = fileUploadService.upload(file);
        } catch (Exception e) {
            e.printStackTrace();
        } 

        return Result.ok(url);
    }
}
